package org.springblade.modules.admin.mapper;

import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springblade.modules.admin.dto.plan.score.PlanScoreSearchDTO;
import org.springblade.modules.admin.entity.MaintainPlanContent;
import org.springblade.modules.admin.vo.MaintainCheckHistoryVO;
import org.springblade.modules.admin.vo.PlanTemplateVO;
import org.springblade.modules.admin.vo.plan.store.ScoreByCountVo;
import org.springblade.modules.admin.vo.plan.store.ScoreByDetailVo;
import org.springblade.modules.admin.vo.plan.store.ScoreByTemplateVo;
import org.springblade.modules.admin.vo.plan.store.WxByPlanHistoryVo;
import org.springblade.modules.admin.vo.score.WxScoreFailureVo;

import java.util.List;

/**
 * @author zcc
 * @version 1.0
 * @date 2024/1/15 13:48
 */
public interface MaintainPlanScoreMapper extends BaseMapper<MaintainPlanContent> {


	/**
	 * 获取评分的保养详情
	 *
	 * @param planId 工单id
	 * @return 数据集
	 */
	ScoreByDetailVo getPlanElevatorDetail(@Param("planId") Long planId);

	/**
	 * 获取保养工单的保养工单列表
	 *
	 * @param planId 工单id
	 * @return 数据集
	 */
	@InterceptorIgnore(tenantLine = "on")
	List<ScoreByTemplateVo> getScoreByTemplates(@Param("planId") Long planId, @Param("tenantId") String tenantId);

	@InterceptorIgnore(tenantLine = "on")
	List<PlanTemplateVO> listPlanHistory(@Param("planId") Long planId, @Param("templateId") Long templateId, @Param("tenantId") String tenantId, @Param("checkHistoryId") Long checkHistoryId);


	/**
	 * 获取保养详情-已评分数据，和未评分的工作项数据
	 *
	 * @param planIds 工单id
	 * @return 数据集
	 */
	@InterceptorIgnore(tenantLine = "on")
	List<ScoreByCountVo> getScoreByCountDetail(@Param("planIds") List<Long> planIds, @Param("tenantId") String tenantId);

	/**
	 * 根据工单信息，获取项目名称
	 *
	 * @param planIds 工单ids
	 * @return 数据集
	 */
	@InterceptorIgnore(tenantLine = "on")
	List<ScoreByCountVo> getScoreBuildingInfo(@Param("planIds") List<Long> planIds);


	/**
	 * 维修-已评分数据，和未评分的工作项数据
	 *
	 * @param planIds 工单id
	 * @return 数据集
	 */
	@InterceptorIgnore(tenantLine = "on")
	List<ScoreByCountVo> getScoreByCountDetailWx(@Param("planIds") List<Long> planIds, @Param("tenantId") String tenantId);


	/**
	 * 获取历史维修工单列表
	 *
	 * @param planScoreSearchDTO 查询
	 * @return 数据集
	 */
	List<WxByPlanHistoryVo> getWxPlanHistoryList(@Param("planScoreSearchDTO") PlanScoreSearchDTO planScoreSearchDTO);


	/**
	 * 获取历史保养工单列表
	 *
	 * @param planScoreSearchDTO 查询
	 * @return 数据集
	 */
	List<WxByPlanHistoryVo> getByPlanHistoryList(@Param("planScoreSearchDTO") PlanScoreSearchDTO planScoreSearchDTO);

    List<MaintainCheckHistoryVO> selectByHistoryImgList(@Param("planIds") List<Long> planIds,@Param("templateContentId") Long templateContentId);


	/**
	 * 获取维修评分，部门判断的结果集
	 * @param planId 工单id
	 * @return 数据集
	 */
    List<WxScoreFailureVo> getWxScoreFailureList(Long planId);
}
